home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / relnotes / ViewKit_dev / ch3.z / ch3
Encoding:
Text File  |  1997-09-04  |  30.5 KB  |  859 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        3.  _O_v_e_r_v_i_e_w
  9.  
  10.           +o n32 and 64-bit libraries are now provided.
  11.  
  12.           +o  Debug library naming has been changed to make the
  13.             debug libraries much easier to use.  To use a debugging
  14.             version of the ViewKit libraries, install the
  15.             ViewKit_dev.sw.debug, and then simply set the
  16.             LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY____PPPPAAAATTTTHHHH environment variable to /usr/lib/debug
  17.             before running your program.  The debugging library has
  18.             full symbols, so stack traces will be more informative.
  19.             The debugging viewkit library also prints various
  20.             warnings, and makes liberal use of assertions to catch
  21.             misuse of the the library.
  22.  
  23.  
  24.           +o To allow for future versioning, libXpm.so has been
  25.             renamed to libXpm.so.1, and libXpm.so is now a symbolic
  26.             link to libXpm.so.1.
  27.  
  28.           +o libXpm is now version 3.4f (previously it was version
  29.             3.2g).
  30.  
  31.  
  32.        3.1  _V_i_e_w_K_i_t__B_u_g__F_i_x_e_s
  33.  
  34.        This chapter lists the major bugs fixed in ViewKit since the
  35.        IRIX 5.3 release.
  36.  
  37.           +o Corrected a number of references to the default
  38.             colormap to use the correct colormap.
  39.  
  40.           +o We have made a systematic effort, using _p_u_r_i_f_y, to find
  41.             and fix memory leaks.  All known ViewKit-induced memory
  42.             leaks and malloc problems have been fixed.
  43.  
  44.           +o _V_k_F_i_l_e_S_e_l_e_c_t_i_o_n_D_i_a_l_o_g can now set a filter on multiple
  45.             dialogs.
  46.  
  47.           +o _V_k_C_o_m_p_o_n_e_n_t::_a_f_t_e_r_R_e_a_l_i_z_e_H_o_o_k now gets called for
  48.             dialogs.
  49.  
  50.           +o The file selection dialog now sets its directory
  51.             correctly, even if there is more than one file
  52.             selection dialog up at a time.
  53.  
  54.           +o Several manual page errors and omissions have been
  55.             fixed.
  56.  
  57.           +o Several classes that did not have missing manual pages
  58.             now have them.
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.           +o Several schemes problems have been corrected.
  75.  
  76.           +o _V_k_C_o_m_p_o_n_e_n_t now calls afterRealizeHook(), even if the
  77.             parent is already realized when show() is called.
  78.  
  79.           +o _V_k_D_o_u_b_l_e_B_u_f_f_e_r now draws the initial display correctly,
  80.             even if it was not realized when it was drawn.
  81.  
  82.           +o _V_k_F_o_r_k_I_O::_c_l_e_a_r_H_i_s_t_o_r_y no longer goes into an infinite
  83.             loop.
  84.  
  85.           +o _V_k_G_r_a_p_h now returns the correct node after a node is
  86.             removed.
  87.  
  88.           +o _V_k_G_r_a_p_h now passes back the X event where appropriate
  89.             and it has an event.
  90.  
  91.           +o Menu items are now in right place when addAction called
  92.             after menu built.
  93.  
  94.           +o Initial menu pane hide now works.
  95.  
  96.           +o Option menu getIndex() now returns 0 initially, not -1.
  97.  
  98.           +o _V_k_N_L_S no longer puts up an empty dialog if no resource
  99.             string is set.
  100.  
  101.           +o Fixed the core dump in _V_k_T_a_b_P_a_n_e_l when adding or
  102.             deleting tabs.
  103.  
  104.           +o _V_k_T_a_b_P_a_n_e_l's popup menu can no longer be torn off --
  105.             doing so was a problem.
  106.  
  107.           +o Fixed the core dump when _V_k_T_a_b_P_a_n_e_l was deleted while a
  108.             work proc was pending.
  109.  
  110.           +o Set the background of the _V_k_T_a_b_P_a_n_e_l drawing area to
  111.             eliminate color flashing.
  112.  
  113.           +o xpm.h is now installed in /usr/include/X11, where most
  114.             applications expect it.  To maintain compatibility with
  115.             IRIX 5.3 and earlier, there is with a symlink from
  116.             /usr/include/Vk.
  117.  
  118.           +o Xpm has been upgraded to xpm version 3.4.  This fixes
  119.             some core dumps.
  120.  
  121.           +o _V_k_C_r_e_a_t_e_X_P_M_P_i_x_m_a_p now handles non-default Visuals
  122.             correctly.
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.           +o Changed demo file installation to be owner=root,
  141.             group=sys, modes 755(directories) and 644(files.  This
  142.             change was in deference to those who felt that looser
  143.             permissions presented a security problem.
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.        3.2  _n_3_2__a_n_d__6_4_-_b_i_t__l_i_b_r_a_r_i_e_s
  151.  
  152.        n32 versions of all ViewKit libraries are provided in
  153.        /usr/lib32.  64-bit versions of all ViewKit libraries are
  154.        provided in /usr/lib64.  For instructions on building the
  155.        ViewKit demo programs in either n32 or 64-bits, see the
  156.        top-level README and Makefile.
  157.  
  158.  
  159.        3.3  _D_e_b_u_g__l_i_b_r_a_r_i_e_s__h_a_v_e__b_e_e_n__r_e_n_a_m_e_d__f_o_r__e_a_s_i_e_r__u_s_e
  160.  
  161.        There are no more ViewKit *_d.a debug libraries, requiring
  162.        relinking your application to use them.
  163.  
  164.        Debug libraries are now DSO's that are installed in the
  165.        debug subdirectory below the corresponding normal DSO.  The
  166.        library names are identical.  This means that an application
  167.        can link normally, rather than with a special debug library.
  168.        By setting the environment variable LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY____PPPPAAAATTTTHHHH, the
  169.        application can run with the debug library.
  170.  
  171.        For example, to run with the 64-bit debug libraries, just:
  172.  
  173.           +o Link normally, such as with "-L/usr/lib64 -lvk".
  174.  
  175.           +o When you want to run with the debug libraries, set the
  176.             environment variable LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY____PPPPAAAATTTTHHHH to
  177.             /usr/lib64/debug.
  178.  
  179.        As always, the debug libraries have a number of aaaasssssssseeeerrrrtttt
  180.        statements.  These are intended to check both the
  181.        application's use of the library and internal library
  182.        consistency.  The assertions are not as complete as we would
  183.        like, but we are adding more over time.
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.        3.4  _C_l_a_s_s__E_n_h_a_n_c_e_m_e_n_t_s
  207.  
  208.        We have been very careful to maintain binary compatibility
  209.        when enhancing a class.  Some changes introduce entirely
  210.        new, non-conflicting, behavior for the class.  Other changes
  211.        introduce a choice between a new behavior and the way the
  212.        class has behaved in the past.  In such a case, to preserve
  213.        compatibility, the default remains to run the old way.  An
  214.        application has to do something, such as set a resource, to
  215.        get the new behavior.
  216.  
  217.  
  218.        3.4.1  _V_k_A_p_p__E_n_h_a_n_c_e_m_e_n_t_s  For more information about any of
  219.        these enhancements, see _m_a_n _V_k_A_p_p(_3_X).
  220.  
  221.  
  222.        3.4.1.1  _V_k_A_p_p_:_:_r_u_n_(_)  _V_k_A_p_p::_r_u_n has increased flexibility.
  223.        It now allows the application more control over how the X
  224.        event loop is handled.
  225.  
  226.  
  227.        3.4.1.2  _V_k_A_p_p_:_:_u_s_e_S_c_h_e_m_e_s_(_)  The static function
  228.        _V_k_A_p_p::_u_s_e_S_c_h_e_m_e_s(_c_h_a_r *_v_a_l) has been added to let schemes
  229.        be turned on or off programmatically.  Schemes defaults to
  230.        being on.  For example,
  231.  
  232.           +o uuuusssseeeeSSSScccchhhheeeemmmmeeeessss((((""""aaaallllllll"""")))) will turn schemes on
  233.  
  234.           +o uuuusssseeeeSSSScccchhhheeeemmmmeeeessss((((""""nnnnoooonnnneeee"""")))) will turn schemes off
  235.  
  236.  
  237.        3.4.1.3  _N_e_w__r_e_s_o_u_r_c_e_:__q_u_i_t_M_o_d_e  _q_u_i_t_M_o_d_e is a new string-
  238.        valued resource (default value: eeeeaaaacccchhhh).
  239.  
  240.        _V_k_A_p_p::_q_u_i_t_Y_o_u_r_s_e_l_f() calls _o_k_T_o_Q_u_i_t for each window.  In
  241.        the past (and still true by default) if any of them returns
  242.        success, then the application quits.  If, however, _q_u_i_t_M_o_d_e
  243.        is set to aaaallllllll then the application quits if, and only if,
  244.        all windows agree to.
  245.  
  246.  
  247.        _N_O_T_E: _t_h_i_s _d_o_e_s _n_o_t _a_p_p_l_y _w_h_e_n _t_h_e _w_i_n_d_o_w _m_a_n_a_g_e_r _t_r_i_e_s _t_o
  248.        _c_l_o_s_e _a _w_i_n_d_o_w.  _T_o _c_o_n_t_r_o_l _t_h_a_t _b_e_h_a_v_i_o_r, _a_n _a_p_p_l_i_c_a_t_i_o_n
  249.        _m_u_s_t _o_v_e_r_r_i_d_e VkSimpleWindow::handleWmDeleteMessage() _a_n_d/_o_r
  250.        VkSimpleWindow::handleWmQuitMessage().  _F_r_o_m _t_h_e_r_e, _t_h_e
  251.        _a_p_p_l_i_c_a_t_i_o_n _c_a_n _c_a_l_l VkApp::quitYourself() _i_f _i_t _w_a_n_t_s _t_o.
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.        3.4.1.4  _V_k_A_p_p_:_:_s_e_t_F_a_l_l_b_a_c_k_s_(_)  _s_t_a_t_i_c _v_o_i_d
  273.        _V_k_A_p_p::_s_e_t_F_a_l_l_b_a_c_k_s(_c_h_a_r **_f_a_l_l_b_a_c_k_s) sets _f_a_l_l_b_a_c_k_s as the
  274.        _s_p_e_c_i_f_i_c_a_t_i_o_n__l_i_s_t needed to call
  275.        _X_t_A_p_p_S_e_t_F_a_l_l_b_a_c_k_R_e_s_o_u_r_c_e_s(_3_X).
  276.  
  277.  
  278.        3.4.2  _V_k_C_o_m_p_o_n_e_n_t__E_n_h_a_n_c_e_m_e_n_t_s  For more information about
  279.        any of these enhancements, see _m_a_n _V_k_C_o_m_p_o_n_e_n_t(_3_X).
  280.  
  281.  
  282.        3.4.2.1  _V_k_C_o_m_p_o_n_e_n_t_:_:_l_o_a_d_O_b_j_e_c_t_(_)  _s_t_a_t_i_c _V_k_C_o_m_p_o_n_e_n_t
  283.        *_l_o_a_d_O_b_j_e_c_t(_c_o_n_s_t _c_h_a_r *_n_a_m_e, _W_i_d_g_e_t _p_a_r_e_n_t, _c_o_n_s_t _c_h_a_r
  284.        *_c_l_a_s_s_N_a_m_e, _c_o_n_s_t _c_h_a_r *_f_i_l_e_n_a_m_e) supports dynamic loading
  285.        of objects, as supported by RapidApp.  Objects must be set
  286.        up properly for this to work.  See _m_a_n _V_k_C_o_m_p_o_n_e_n_t and _m_a_n
  287.        _V_k_C_a_l_l_b_a_c_k_O_b_j_e_c_t or the RapidApp documentation for details.
  288.  
  289.  
  290.        3.4.2.2  _V_k_C_o_m_p_o_n_e_n_t_:_:_s_e_t_D_e_f_a_u_l_t_R_e_s_o_u_r_c_e_s_(_)  _v_o_i_d
  291.        _V_k_C_o_m_p_o_n_e_n_t::_s_e_t_D_e_f_a_u_l_t_R_e_s_o_u_r_c_e_s ( _c_o_n_s_t _W_i_d_g_e_t _w, _c_o_n_s_t
  292.        _S_t_r_i_n_g *) now supports a syntax (a prepended "+" or "-")
  293.        that qualifies resources for such things as overriding SGI
  294.        Schemes.
  295.  
  296.  
  297.        3.4.3  _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r_:_:_p_r_e_p_o_s_t_C_a_l_l_b_a_c_k  This callback is
  298.        invoked just before a dialog is displayed.
  299.  
  300.        For more information see _m_a_n _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r(_3_X).
  301.  
  302.  
  303.        3.4.4  _V_k_M_e_n_u__E_n_h_a_n_c_e_m_e_n_t_s  For more information about any
  304.        of these enhancements, see _m_a_n _V_k_M_e_n_u(_3_X).
  305.  
  306.  
  307.        3.4.4.1  _V_k_M_e_n_u_:_:_s_e_t_M_e_n_u_B_a_r__(_)  _V_k_M_e_n_u::_s_e_t_M_e_n_u_B_a_r
  308.        (_V_k_M_e_n_u_D_e_s_c *_m_e_n_u_D_e_s_c, _X_t_P_o_i_n_t_e_r _c_l_i_e_n_t_D_a_t_a) is an
  309.        overloaded entry to allow controlling default client data.
  310.        This effectively allows passing zero as client data (by
  311.        setting the default client data to zero).  There remains no
  312.        way to tell passing an explicit zero from just not
  313.        initializing the client data in the _V_k_M_e_n_u_D_e_s_c structure.
  314.  
  315.  
  316.        3.4.4.2  _V_k_M_e_n_u_:_:_g_e_t_L_a_b_e_l__(_)  _V_k_M_e_n_u_I_t_e_m::_g_e_t_L_a_b_e_l(_v_o_i_d) was
  317.        added for symmetry with the existing _V_k_M_e_n_u_I_t_e_m::_s_e_t_L_a_b_e_l().
  318.  
  319.  
  320.        3.4.4.3  _V_k_M_e_n_u__s_e_p_a_r_a_t_o_r_s__c_a_n__n_o_w__h_a_v_e__n_a_m_e_s  Menu
  321.        separators can now have names.  This is so that they can be
  322.        manipulated just like any other menu item.
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.        3.4.4.4  _P_u_l_l_d_o_w_n _m_e_n_u_s _m_a_y _n_o_w _b_e _p_l_a_c_e_d _i_n _t_h_e _o_v_e_r_l_a_y
  339.        _p_l_a_n_e_s.  This addition allows putting ViewKit pulldown menus
  340.        in the overlay planes.  Doing so prevents expose events from
  341.        disturbing such things as complex GL rendering.  The current
  342.        implementation is global.  For a single application, either
  343.        all menus go in the popu planes or none of them do.  That
  344.        may be relaxed in a future release.
  345.  
  346.  
  347.        3.4.4.4.1  _H_o_w__T_o__E_n_a_b_l_e__P_u_l_l_d_o_w_n__M_e_n_u_s__I_n__T_h_e__P_o_p_u_p__P_l_a_n_e_s
  348.        By default, pulldown menus appear in the normal planes.
  349.        There are three ways to enable pulldowns in the popup
  350.        planes:
  351.  
  352.           +o Call _V_k_M_e_n_u::_u_s_e_O_v_e_r_l_a_y_M_e_n_u_s(_T_R_U_E) in your application.
  353.             This will force pulldowns in the popup planes, with no
  354.             way to put them back in the normal planes without
  355.             recompiling.
  356.  
  357.           +o Put the resource string "*useOverlayMenus: True" in
  358.             your application's app-defaults file.  This will put
  359.             pulldowns in the popup planes by default, but allow
  360.             users to use the normal planes by changing their
  361.             .Xdefaults file.
  362.  
  363.           +o Ask the user to add the "-useOverlayMenus" command line
  364.             switch when they run the application.  This will put
  365.             pulldowns in the normal planes by default, but allow
  366.             the user to explicitly ask that the popup planes be
  367.             used.
  368.  
  369.  
  370.        3.4.4.4.2  _D_i_s_a_d_v_a_n_t_a_g_e_s _O_f _P_u_l_l_d_o_w_n _M_e_n_u_s _I_n _T_h_e _P_o_p_u_p
  371.        _P_l_a_n_e_s  Why not put pulldown menus in the popup planes all
  372.        of the time?  There are several disadvantages to using the
  373.        popup planes, so menus should be put there only when the
  374.        advantages outweigh the disadvantages:
  375.  
  376.           +o The colormap in the popup planes only has three color
  377.             entries.  (The fourth entry is a transparent pixel.)
  378.             Because there are fewer colors available, menus in the
  379.             popup planes have a different appearance.  If you have
  380.             items in your menu pulldowns other than labels (e.g.
  381.             cascade buttons or toggle buttons), they may not look
  382.             correct in some of the less-common color schemes.
  383.  
  384.           +o Other applications that are using the popup planes at
  385.             the same time will display in the wrong colors when a
  386.             pulldown menu appears (i.e. colors will flash).  This
  387.             happens because the pulldown menu colormap will get
  388.             installed and replace any previous overlay colormap.
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.           +o When a pulldown menu in the popup plane is torn off,
  405.             4Dwm puts the tear-off in the popup planes.  The title
  406.             bar of the window appears with the wrong colors, and as
  407.             with (2), the window appears with the wrong colors when
  408.             another application uses the popup planes (e.g. 4Dwm's
  409.             root-window popup menu).
  410.  
  411.  
  412.        3.4.4.4.3  _D_e_m_o _P_r_o_g_r_a_m _F_o_r _P_u_l_l_d_o_w_n _M_e_n_u_s _I_n _T_h_e _P_o_p_u_p
  413.        _P_l_a_n_e_s  Running the example program "vkmenu" shows that the
  414.        expose counter increments each time a menubar item is
  415.        selected and dismissed.  Running "vkmenu -useOverlayMenus"
  416.        shows that the expose counter does not change when pulldown
  417.        menus appear and disappear, since no expose events are
  418.        generated.
  419.  
  420.           +o For more information about the demo program, see
  421.             /_u_s_r/_s_h_a_r_e/_s_r_c/_V_i_e_w_K_i_t/_M_e_n_u_s/_R_E_A_D_M_E.
  422.  
  423.           +o For more information about the affected ViewKit
  424.             classes, see _m_a_n _V_k_A_p_p(_3_X), _m_a_n _V_k_M_e_n_u(_3_X), _m_a_n
  425.             _V_k_S_u_b_M_e_n_u(_3_X).
  426.  
  427.  
  428.        3.4.5  _V_k_M_e_n_u_B_a_r_:_:_s_h_o_w_H_e_l_p_P_a_n_e_(_)
  429.        _V_k_M_e_n_u_B_a_r::_s_h_o_w_H_e_l_p_P_a_n_e(_B_o_o_l_e_a_n _s_h_o_w = _T_R_U_E) controls
  430.        whether the Help pane is visible or not.
  431.  
  432.        For more information see _m_a_n _V_k_M_e_n_u_B_a_r(_3_X).
  433.  
  434.  
  435.        3.4.6  _V_k_N_a_m_e_L_i_s_t__E_n_h_a_n_c_e_m_e_n_t_s  For more information about
  436.        any of these enhancements, see _m_a_n _V_k_N_a_m_e_L_i_s_t(_3_X).
  437.  
  438.  
  439.        3.4.6.1  _V_k_N_a_m_e_L_i_s_t__h_a_s__n_e_w__m_e_m_b_e_r__f_u_n_c_t_i_o_n_s  Some new
  440.        utility functions have been added.
  441.  
  442.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_I_n_d_e_x();
  443.  
  444.           +o _V_k_N_a_m_e_L_i_s_t::_r_e_m_o_v_e(_c_h_a_r *);
  445.  
  446.           +o _V_k_N_a_m_e_L_i_s_t::_r_e_m_o_v_e(_i_n_t _i_n_d_e_x, _i_n_t _c_o_u_n_t=_1);
  447.  
  448.  
  449.        3.4.6.2  _P_r_o_b_l_e_m__w_i_t_h__V_k_N_a_m_e_L_i_s_t__o_p_e_r_a_t_o_r_s  Some of the
  450.        _V_k_N_a_m_e_L_i_s_t operators are a problem, because they allocate
  451.        memory that must later be freed by the caller.  Because
  452.        operators are often used in expressions, this is an open
  453.        invitation to memory leaks.  Several corresponding new
  454.        conventional functions have been added.  They each make it
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.        more obvious that there might be something to be freed.  One
  471.        of them (_g_e_t_S_u_b_s_t_r_i_n_g_s()) is also considerably more
  472.        efficient.  Applications are strongly encouraged to switch
  473.        to the new conventional functions.
  474.  
  475.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_S_t_r_i_n_g();
  476.  
  477.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_S_u_b_s_t_r_i_n_g_s();
  478.  
  479.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_S_t_r_i_n_g_T_a_b_l_e();
  480.  
  481.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_X_m_S_t_r_i_n_g_T_a_b_l_e()
  482.  
  483.           +o _V_k_N_a_m_e_L_i_s_t::_f_r_e_e_X_m_S_t_r_i_n_g_T_a_b_l_e()
  484.  
  485.  
  486.        3.4.7  _V_k_R_u_n_O_n_c_e_2__n_o_t_e  For more information about _V_k_R_u_n_O_n_c_e
  487.        or _V_k_R_u_n_O_n_c_e_2, see _m_a_n _V_k_R_u_n_O_n_c_e(_3_X) and _m_a_n _V_k_R_u_n_O_n_c_e_2(_3_X).
  488.  
  489.        _V_k_R_u_n_O_n_c_e_2 is very similar to _V_k_R_u_n_O_n_c_e, but there are
  490.        subtle differences between these two classes.  _V_k_R_u_n_O_n_c_e_2
  491.        adds several new member functions.  It also does error
  492.        checking that _V_k_R_u_n_O_n_c_e does not.
  493.  
  494.        We suggest that all applications that can do so use
  495.        _V_k_R_u_n_O_n_c_e_2, rather than _V_k_R_u_n_O_n_c_e.
  496.  
  497.  
  498.        3.4.8  _V_k_S_i_m_p_l_e_W_i_n_d_o_w__E_n_h_a_n_c_e_m_e_n_t_s  For more information
  499.        about any of these enhancements, see _m_a_n _V_k_S_i_m_p_l_e_W_i_n_d_o_w(_3_X).
  500.  
  501.  
  502.        3.4.8.1  _V_k_S_i_m_p_l_e_W_i_n_d_o_w__p_r_o_v_i_d_e_s__a_c_c_e_s_s__t_o__Q_u_i_c_k_H_e_l_p
  503.        QuickHelp provides a status line at the bottom of the window
  504.        and/or popup balloon help.  The feature is controlled by X
  505.        resources, so all that is needed to enable it for any
  506.        particular application is the right settings in the
  507.        application's X default resources file.
  508.  
  509.        Note: There is also an experimental programmatic interface
  510.        to QuickHelp.  _T_h_i_s _i_n_t_e_r_f_a_c_e _i_s _s_u_b_j_e_c_t _t_o _c_h_a_n_g_e _i_n _a
  511.        _f_u_t_u_r_e _r_e_l_e_a_s_e.
  512.  
  513.  
  514.        3.4.8.2  _V_k_S_i_m_p_l_e_W_i_n_d_o_w_:_:_g_e_t_W_i_n_d_o_w_(_)  _s_t_a_t_i_c _V_k_S_i_m_p_l_e_W_i_n_d_o_w
  515.        *_g_e_t_W_i_n_d_o_w(_V_k_C_o_m_p_o_n_e_n_t *_c_o_m_p_o_n_e_n_t) returns the
  516.        _V_k_S_i_m_p_l_e_W_i_n_d_o_w object (or subclass) that contains the given
  517.        _V_k_C_o_m_p_o_n_e_n_t.
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.        3.4.9  _V_k_T_a_b_P_a_n_e_l__I_m_p_r_o_v_e_d__A_p_p_e_a_r_a_n_c_e  _V_k_T_a_b_P_a_n_e_l previously
  537.        had a flat appearance for its tabs, rather than providing
  538.        tabs with a shaded 3D appearance.  This was considered more
  539.        of a bug to be fixed than a feature.  _V_k_T_a_b_P_a_n_e_l tab drawing
  540.        has now been improved so that the tabs have an (optional) 3D
  541.        appearance.
  542.  
  543.        The new 3D appearance is controlled by a new _V_k_T_a_b_P_a_n_e_l
  544.        resource, _u_s_e_3_D_T_a_b_s (default TRUE).  If the resource is set
  545.        to TRUE, the tabs are drawn with a shaded 3D appearance.
  546.  
  547.        _V_k_T_a_b_P_a_n_e_l also has two new member functions so that
  548.        applications can cooperate with the improved (fixed)
  549.        appearance.  Applications that construct pixmaps for tab
  550.        labels should set _u_s_e_3_D_T_a_b_s = _T_R_U_E and use the new functions
  551.        to get their backgrounds.
  552.  
  553.           +o Pixel getSelectedTabBG()
  554.  
  555.           +o Pixel getUnselectedTabBG()
  556.  
  557.        The member function GC gc() is now deprecated, in favor of
  558.        the new functions, because it is meaningful only with
  559.        _u_s_e_3_D_T_a_b_s = _F_A_L_S_E.  Apps that construct pixmaps for tab
  560.        labels should set _u_s_e_3_D_T_a_b_s = _T_R_U_E and use the new functions
  561.        to get their backgrounds.
  562.  
  563.        For more information see _m_a_n _V_k_T_a_b_P_a_n_e_l(_3_X).
  564.  
  565.  
  566.        3.4.10  _V_k_W_i_n_d_o_w__E_n_h_a_n_c_e_m_e_n_t_s  For more information about
  567.        any of these enhancements, see _m_a_n _V_k_W_i_n_d_o_w(_3_X).
  568.  
  569.  
  570.        3.4.10.1  _V_k_W_i_n_d_o_w_:_:_g_e_t_W_i_n_d_o_w_(_)  _s_t_a_t_i_c _V_k_W_i_n_d_o_w
  571.        *_g_e_t_W_i_n_d_o_w(_V_k_C_o_m_p_o_n_e_n_t *_c_o_m_p_o_n_e_n_t) returns the _V_k_W_i_n_d_o_w
  572.        object (or subclass) that contains the given _V_k_C_o_m_p_o_n_e_n_t.
  573.  
  574.  
  575.        3.4.10.2  _V_k_W_i_n_d_o_w_:_:_g_e_t_M_e_n_u_(_)  _s_t_a_t_i_c _V_k_M_e_n_u_B_a_r
  576.        *_g_e_t_M_e_n_u(_V_k_C_o_m_p_o_n_e_n_t *_c_o_m_p_o_n_e_n_t) returns the menubar used by
  577.        the window that contains the given _V_k_C_o_m_p_o_n_e_n_t.
  578.  
  579.  
  580.        3.5  _N_e_w__C_l_a_s_s_e_s
  581.  
  582.        The following classes are new since IRIX 5.3.
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.        3.5.1  _V_k_C_o_l_o_r_C_h_o_o_s_e_r_D_i_a_l_o_g  For more information, see _m_a_n
  603.        _V_k_C_o_l_o_r_C_h_o_o_s_e_r_D_i_a_l_o_g(_3_X).
  604.  
  605.  
  606.        3.5.2  _V_k_C_u_t_P_a_s_t_e  The _V_k_C_u_t_P_a_s_t_e class provides programmers
  607.        with a simple and clean API for implementing cut and paste
  608.        and drag and drop functionality in their application.
  609.  
  610.        For more information, see _m_a_n _V_k_C_u_t_P_a_s_t_e(_3_X).
  611.  
  612.  
  613.        3.5.3  _V_k_M_o_v_i_e_B_u_t_t_o_n  _V_k_M_o_v_i_e_B_u_t_t_o_n is a multimedia button
  614.        component that plays a movie within a pushable button.  This
  615.        class is most effective with a short movie that acts as an
  616.        animation.
  617.  
  618.        For more information, see _m_a_n _V_k_M_o_v_i_e_B_u_t_t_o_n(_3_X).
  619.  
  620.  
  621.        3.5.4  _V_k_M_o_v_i_e_P_l_a_y_e_r  _V_k_M_o_v_i_e_P_l_a_y_e_r is a multimedia
  622.        component that plays a movie and supports simple operations
  623.        such as playing, stoping, rewinding.
  624.  
  625.        For more information, see _m_a_n _V_k_M_o_v_i_e_P_l_a_y_e_r(_3_X).
  626.  
  627.  
  628.        3.5.5  _V_k_P_r_o_g_r_e_s_s_D_i_a_l_o_g  This is a new SGI Style Guide-
  629.        compliant class for displaying the approximate amount of a
  630.        task that has been completed.
  631.  
  632.        For more information, see _m_a_n _V_k_P_r_o_g_r_e_s_s_D_i_a_l_o_g(_3_X).
  633.  
  634.  
  635.        3.5.6  _V_k_S_o_A_p_p  _V_k_S_o_A_p_p is a class used by all Inventor
  636.        ViewKit applications to handle initialization.
  637.  
  638.        For more information, see _m_a_n _V_k_S_o_A_p_p(_3_X).
  639.  
  640.  
  641.        3.5.7  _V_k_T_a_b_b_e_d_D_e_c_k  _V_k_T_a_b_b_e_d_D_e_s_k combines a _V_k_T_a_b_P_a_n_e_l and
  642.        a _V_k_D_e_c_k, to give an appearance somewhat like a set of
  643.        tabbed cards.
  644.  
  645.        For more information, see _m_a_n _V_k_T_a_b_b_e_d_D_e_c_k(_3_X).
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.        3.6  _N_e_w__G_l_o_b_a_l__F_u_n_c_t_i_o_n_s
  669.  
  670.        The following global functions are new since IRIX 5.3.
  671.  
  672.  
  673.        3.6.1  _V_k_S_e_t_H_i_g_h_l_i_g_h_t_i_n_g_P_i_x_m_a_p  For more information, see
  674.        _m_a_n _V_k_S_e_t_H_i_g_h_l_i_g_h_t_i_n_g_P_i_x_m_a_p(_3_X).
  675.  
  676.  
  677.        3.6.2  _V_k_C_o_n_f_i_g_u_r_e_W_i_n_d_o_w  For more information, see _m_a_n
  678.        _V_k_C_o_n_f_i_g_u_r_e_W_i_n_d_o_w(_3_X).
  679.  
  680.  
  681.        3.7  _N_e_w__l_i_b_r_a_r_y_:__l_i_b_v_k_S_G_I
  682.  
  683.        libvk is a portable library.  There are versions available
  684.        for most Unix workstations.
  685.  
  686.        libvkSGI has been created for classes that philosophically
  687.        belong in libvk, but which are SGI-specific.  In this
  688.        release, libvkSGI includes:
  689.  
  690.  
  691.        3.8  _N_e_w__l_i_b_r_a_r_y_:__l_i_b_V_k_E_Z_._a
  692.  
  693.  
  694.  
  695.        3.9  _l_i_b_X_p_m__u_p_g_r_a_d_e_s
  696.  
  697.  
  698.  
  699.        3.9.1  _X_p_m__d_o_c_u_m_e_n_t_a_t_i_o_n  We now pass through the
  700.        documentation files that we get with Xpm.  These files are
  701.        shipped as the subsystem _V_i_e_w_K_i_t__d_e_v._m_a_n._x_p_m-_d_o_c, and are
  702.        installed in /usr/share/doc/Xpm.  The new on-line _X_p_m(_3_x)
  703.        man page also tells where to find these documents.
  704.  
  705.        3.9.2  _l_i_b_X_p_m_._s_o__h_a_s__b_e_c_o_m_e__l_i_b_X_p_m_._s_o_._1  To provide for
  706.        future incompatible libXpm DSO's, libXpm.so is now called
  707.        libXpm.so.1.  There is a symbolic link, libXpm.so, that
  708.        points to libXpm.so.1.  This should cause no problems for
  709.        any existing application.
  710.  
  711.  
  712.        3.9.3  _l_i_b_X_p_m__i_s__n_o_w__v_e_r_s_i_o_n__3_._4  The IRIX 5.3 release
  713.        contained Xpm version 3.2g.  SGI never released Xpm version
  714.        3.3, which was incompatible with 3.2.  The current release
  715.        is Xpm 3.4, which is both source and binary compatible with
  716.        Xpm version 3.2.
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.        3.9.4  _X_p_m__E_n_h_a_n_c_e_m_e_n_t_s__S_i_n_c_e__I_R_I_X__5_._3__(_X_p_m__3_._2_g_)
  735.  
  736.           +o The colorTable member of the XpmAttributes structure is
  737.             now an (XpmColor*) in order to be compatible with an
  738.             XpmImage colorTable.  However in order to be backward
  739.             compatible this field is cast to (XpmColor **), which
  740.             is equivalent to (char ***), when it is used with the
  741.             old flags XpmInfos and XpmReturnInfos.  To handle the
  742.             new type, the new flags XpmColorTable and
  743.             XpmReturnColorTable have been defined.
  744.  
  745.             NOTE: code that directly accesses the
  746.             XpmAttributes.colorTable, such as "... =
  747.             XpmAttributes.colorTable[i][1]" will need to be changed
  748.             to something like "... =
  749.             XpmAttributes.colorTable[i].symbolic"
  750.  
  751.           +o The XpmInfo struct has been extended to avoid having to
  752.             deal with an XpmAttributes at the lower level.  The
  753.             idea is that all the data stored in an Xpm file can be
  754.             retrieved through both an XpmImage and an XpmInfo
  755.             struct.
  756.  
  757.           +o XpmUndefPixel is defined and exported by xpm.h in order
  758.             to let clients providing their own colorTable when
  759.             writing out an Xpm file.
  760.  
  761.           +o A new function and a new define should help client
  762.             figuring out with which Xpm library version they are
  763.             working.  These are XpmIncludeVersion and
  764.             XpmLibraryVersion().
  765.  
  766.           +o XPM1 files are supported.
  767.  
  768.           +o A new function is provided to get an error string
  769.             related to the returned error code.
  770.  
  771.           +o The parser is more flexible about the way strings are
  772.             distributed on lines.  A single line XPM file can be
  773.             read.
  774.  
  775.           +o A new level interface is provided to allow applications
  776.             to do either icon editing or data caching.
  777.  
  778.           +o New structures are provided to deal with the lower
  779.             level:  XpmImage, XpmColor, XpmInfos.
  780.  
  781.           +o xpm.h defines XpmFormat, XpmVersion, and XpmRevision
  782.             numbers.
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.        3.9.5  _X_p_m__B_u_g__F_i_x_e_s__S_i_n_c_e__I_R_I_X__5_._3
  801.  
  802.           +o A segmentation fault occurring in some weird case.
  803.  
  804.           +o The list of pixels returned in XpmAttributes was wrong
  805.             when two colors were defined as None in the read XPM.
  806.  
  807.           +o The parser was skipping white space reading extension
  808.             strings.  This has been fixed so extension lines are
  809.             now returned exactly as they are.
  810.  
  811.           +o When writing an XPM file, '-' characters are replaced
  812.             with '_' characters in the array name, in order to get
  813.             a valid C syntax name.
  814.  
  815.           +o XYPixmap format images are now handled correctly.
  816.  
  817.           +o XPM1 file with names using multiple '_' characters are
  818.             now handled correctly.
  819.  
  820.           +o Reading certain binary files was leading to a bus
  821.             error.
  822.  
  823.           +o The ? character is no longer used when writing an XPM
  824.             file in order to avoid possible ANSI trigraphs.
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.